void goUp(){
    for(int x = 0; x <= 3; x++){
        if(plocha[0][x] == plocha[1][x] && plocha[2][x] == plocha[3][x]){
            max_added = 2;       
        }
        else{
            max_added = 1;
        }
                        
        for(int y = 0; y <= 2; y++){
            for(int y_p = y; y_p >= 0; y_p--){
                if(plocha[y_p][x] == plocha[y_p+1][x] && plocha[y_p][x] != 0 && added < max_added){
                    plocha[y_p][x]++;
                    plocha[y_p+1][x] = 0;
                    added++;
                    moved = true;
                }
                if(plocha[y_p][x] == 0 && plocha[y_p+1][x] != 0){
                    plocha[y_p][x] = plocha[y_p+1][x];
                    plocha[y_p+1][x] = 0;
                    moved = true;
                }
            }     
        }
        added = 0;    
    }
}

void goDown(){
    for(int x = 0; x <= 3; x++){
        if(plocha[0][x] == plocha[1][x] && plocha[2][x] == plocha[3][x]){
            max_added = 2;       
        }
        else{
            max_added = 1;
        }
                            
        for(int y = 3; y >= 1; y--){
            for(int y_p = y; y_p <= 3; y_p++){
                if(plocha[y_p-1][x] == plocha[y_p][x] && plocha[y_p][x] != 0 && added < max_added){
                    plocha[y_p-1][x]++;
                    plocha[y_p][x] = 0; 
                    added++;
                    moved = true;
                }
                if(plocha[y_p][x] == 0 && plocha[y_p-1][x] != 0){
                    plocha[y_p][x] = plocha[y_p-1][x];
                    plocha[y_p-1][x] = 0;
                    moved = true;
                }
            }    
        }
        added = 0;     
    }
}
void goRight(){
    for(int y = 0; y <= 3; y++){
        if(plocha[y][0] == plocha[y][1] && plocha[y][2] == plocha[y][3]){
            max_added = 2;       
        }
        else{
            max_added = 1;
        }                 
        for(int x = 3; x >= 1; x--){
            for(int x_p = x; x_p <= 3; x_p++){
                if(plocha[y][x_p-1] == plocha[y][x_p] && plocha[y][x_p] != 0 && added < max_added){
                    plocha[y][x_p-1]++;
                    plocha[y][x_p] = 0;
                    added++;
                    moved = true;
                }
                if(plocha[y][x_p] == 0 && plocha[y][x_p-1] != 0){
                    plocha[y][x_p] = plocha[y][x_p-1];
                    plocha[y][x_p-1] = 0;
                    moved = true;
                }
            }    
        }
        added = 0;     
    }
}

void goLeft(){
    for(int y = 0; y <= 3; y++){
        if(plocha[y][0] == plocha[y][1] && plocha[y][2] == plocha[y][3]){
            max_added = 2;       
        }
        else{
            max_added = 1;
        }              
        for(int x = 0; x <= 2; x++){
            for(int x_p = x; x_p >= 0; x_p--){
                if(plocha[y][x_p] == plocha[y][x_p+1] && plocha[y][x_p] != 0 && added < max_added){
                    plocha[y][x_p]++;
                    plocha[y][x_p+1] = 0;  
                    added++;
                    moved = true;
                }
                if(plocha[y][x_p] == 0 && plocha[y][x_p+1]){
                    plocha[y][x_p] = plocha[y][x_p+1];
                    plocha[y][x_p+1] = 0;
                    moved = true;
                }
            }     
        }
        added = 0;     
    }     
}